EC2 Image BuilderでMackerelエージェントイントール済みのAMI(Auto Scaling環境向け)を作成してみた #reinvent
AWSを愛する皆さま、あけましておめでとうございます。
もしお年玉をもらえるなら 広いキッチン が欲しいコンサルティング部の西野(@xiye_gen)です。
2020年のAWS初めとして、いまさらながらEC2 Image Builderをさわってみました。
目次
お題
Auto Scaling環境向けのゴールデンイメージを作成する
タイトルのとおり、MackerelエージェントをインストールしたAmazon Linux 2のゴールデンイメージを作成してみました。
Auto Scaling環境においてMackerelエージェントを導入する際にはいくつか注意しなければならないこと(下記ブログを参照)がございます。
MackerelエージェントをAuto Scaling環境へ導入する
今回は下記の3点を必須の要件とします。
- Mackerelエージェントのインストール
- ホストIDファイルの削除
- エージェント自動退役の設定
おことわり
EC2 Image Builderの一般的な使用方法については本ブログで解説しません。
公式ドキュメントや後述の参考ブログ等をご参照ください。
EC2 Image Builderの設定
Componentの作成
Definition documentを下記のとおり設定します。
name: InstallMackerelAgentDocument description: Install Mackerel Agent for Auto Scaling environment. schemaVersion: 1.0 phases: - name: build steps: - name: UpdateOS action: UpdateOS - name: InstallMackerelAgent action: ExecuteBash inputs: commands: - sudo curl -fsSL https://mackerel.io/file/script/amznlinux/setup-all-yum-v2.sh | MACKEREL_APIKEY='YOUR API KEY' sh - sudo rm /var/lib/mackerel-agent/id - sudo sed -i -e '/^#\s*AUTO_RETIREMENT\s*=\s*1/s/^#\s*//' /etc/sysconfig/mackerel-agent - name: validate steps: - name: CheckMackerelAgent action: ExecuteBash inputs: commands: - rpm -qi mackerel-agent - mackerel-agent configtest - name: test steps: - name: TestMackerelAgent action: ExecuteBash inputs: commands: - sudo systemctl status mackerel-agent
14-16行目で上述した下記の作業を実施しています。
- Mackerelエージェントのインストール
- ホストIDファイルの削除
- エージェント自動退役の設定
'YOUR API KEY'
の部分にはご自身の環境にあわせた値を指定してください。
Image Pipelineの作成
Source Image
本日時点で最新版のAmazon Linux 2(Version 2019.11.21)を指定しました。
Build components
先ほど作成したComponentを指定します。
IAM role
下記のAWS管理ポリシーを割り当てたIAMロールを指定します。
- EC2InstanceProfileForImageBuilder
- AmazonSSMManagedInstanceCore
その他(検証作業中にハマったこと)
Infrastructure settings(optional)のLogsにアクセス権限未設定のS3を設定したところ、Pipelineの実行に失敗しました。
適切な権限を設定するか、あるいはLogsを指定しないようにしてください。
動作確認
Image Pipelineを実行し、出来上がったAMIから2台のEC2インスタンスを起動します。
MackerelのHosts画面から当該インスタンスを確認できます。
自動退役設定がうまくいっているか見るため、当該インスタンスを終了させます。
しばらく経つとHosts画面からインスタンスの情報が見えなくなります。自動退役設定も成功しているようです。
参考ブログ
EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました!
[re:Invent 2019] EC2イメージビルダーをサクッと試してみた
[re:Invent 2019] EC2 Image Builder でコンポーネントを作成してみた
EC2 Image BuilderでCloudwatch Agent構築したAMIを作成してみた
終わりに
つい先日に同様の作業を手作業(ベースのインスタンスにSSH接続→コマンドラインによる作業→AMI化)で実施したばかりだったので、とても嬉しいアップデートでした。ゴールデンイメージの作成や管理の利便性が高まりましたね。
このブログがほんの少しでも世界を良くできれば嬉しいです。
コンサルティング部の西野(@xiye_gen)がお送りしました。